package ch05
{
	import flash.display.Sprite;
	import flash.events.Event;

	import utils.Arrow;

	/**
	 * 角加速度.
	 * @author sjp
	 *
	 */
	public class FollowMouse2 extends Sprite
	{
		private var arrow:Arrow;
		private var vx:Number=0;
		private var vy:Number=0;
		private var force:Number=0.05;

		public function FollowMouse2()
		{
			init();
		}

		private function init():void
		{
			arrow=new Arrow();
			addChild(arrow);
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}

		private function onEnterFrame(event:Event):void
		{
			/**
			 * 本例中将 speed 转为 force 并让它的值变得很小，是因为加速度是累加的，
			 * 我们希望让它开始的时候小一些，这个值很快就会增大。
			 * 同样注意 vx,vy 被声明为类的变量，可以由类的任意方法对其进行访问。
			 * */
			var dx:Number=mouseX - arrow.x;
			var dy:Number=mouseY - arrow.y;
			var angle:Number=Math.atan2(dy, dx);
			arrow.rotation=angle * 180 / Math.PI;
			var ax:Number=Math.cos(angle) * force;
			var ay:Number=Math.sin(angle) * force;
			vx+=ax;
			vy+=ay;
			arrow.x+=vx;
			arrow.y+=vy;
		}
	}
}